package com.soo.hoo.admin.service;

import com.soo.hoo.admin.model.dto.UserDTO;
import com.soo.hoo.admin.model.entity.SysUser;
import com.soo.hoo.admin.model.vo.UserVO;
import com.soo.hoo.core.service.IService;

/**
 * <p>
 * 用户接口
 * </p>
 *
 * @author 杨燚
 * @since 2022/2/21
 */
public interface UserService extends IService<SysUser> {

    /**
     * 登录，返回token等信息
     *
     * @param user 用户信息
     * @return token等信息
     */
    UserVO login(UserDTO user);

    /**
     * 使用手机号快捷登录，用于微信小程序
     *
     * @param phoneNo 手机号码
     * @return 登录后的信息
     */
    UserVO login(String phoneNo);

    /**
     * 根据token校验token是否有效
     *
     * @param tokenValue token
     */
    void checkToken(String tokenValue);

    /**
     * 退出登录
     *
     * @param userId 用户id，登录者id
     */
    void logout(Long userId);

    /**
     * 获取用户信息，这里返回的是登录信息，包括token
     *
     * @param userId 用户id
     * @return 用户信息
     */
    UserVO getUserInfo(Long userId);

    /**
     * 初始化数据，系统启动后默认会有一个超管，超管拥有所有权限
     */
    void initUser();

    /**
     * 验证用户是否已存在
     *
     * @param userName 用户名称
     */
    void verifyUser(String userName);
}
